import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;

public class Hero {

	// 표시 이미지
	public Image image;
	// 표시 위치 좌표
	public int x = 200;
	public int y = 130;
	// 이동량 ( 키보드 조작에 의해서 설정될 값)
	public int dx, dy;

	public static int statusCount = 100;

	public static Font status;

	Rectangle rect;

	public Hero(Image image, int statusCount, Font status) {
		this.image = image;

		rect = new Rectangle(image.getWidth(null), image.getHeight(null));

	}

	// 게임 화면(Panel)에 수신된 keyPress 이벤트를 처리할 메서드
	public void keyPressedHandler(KeyEvent e) {
		switch (e.getKeyCode()) {
		case KeyEvent.VK_W:
			dy = -3;
			break;
		case KeyEvent.VK_S:
			dy = +3;
			break;
		}

	}

	// 게임 화면(Panel)에 수신된 keyRelease 이벤트를 처리할 메서드
	public void keyReleasedHandler(KeyEvent e) {
		// getKeyCode() 는 떼었을때 키 값 반환
		switch (e.getKeyCode()) {
		case KeyEvent.VK_SPACE:
			dy = 0;
			break;
		}

	}

	public void render(Graphics g) {
		// 히어로 캐릭터의 이미지를 메인스크린에 넘겨서 그려줌
		g.drawImage(image, x, y, null);

		// 스코어의 글씨를 출력.
		// 오른쪽 아래에서 출력하여 지속적으로 변화하게 만든다.

		status = new Font("맑은 고딕", Font.BOLD, 9);

		String volumn1 = String.valueOf(" HP : " + statusCount);
		g.setFont(status);
		g.setColor(Color.WHITE);
		g.drawString(volumn1, x + 2, y - 3);

	}

	// 프레임 단위로 데이터 갱신하는 메서드
	public void update() {
		// 키보드 조작에 의해서 변경된 값을 좌표에 적용
		y = y + dy;
		if (y <= 0) {
			y = 0;
		}
		if (y >= 320 - image.getHeight(null)) {
			y = 320 - image.getHeight(null);
		}
	}

	public Rectangle getArea() {
		rect.x = x;
		rect.y = y;
		return rect;
	}

}
